package com.yuandian.management.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuandian.api.management.entity.ConfBusiness;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.management.vo.SearchOptionVo;

import java.util.List;
import java.util.Map;

/**
 * 业务配置表-Service接口
 *
 */
public interface ConfBusinessService extends IService<ConfBusiness> {

	/**
	 * 判断业务是否被确认
	 * @param ids
	 * @param isConfirm 是否确认业务
	 * @return
	 */
	boolean confirmBusiness(List<Integer> ids, boolean isConfirm);

	/**
	 * 通过系统id获取改系统下的业务数
	 * @param systemIds 主键
	 * @return 通用返回对象
	 */
    List<Map<String, Integer>> getBusinessCountBySystemIds(List<Integer> systemIds);


	/**
	 * 分页查询
	 *
	 * @param confBusiness 筛选条件
	 * @return 通用返回对象
	 */
	Page<ConfBusiness> listPage(ConfBusiness confBusiness);

	/**
	 * 新增数据
	 *
	 * @param confBusiness 实例对象
	 * @return 通用返回对象
	 */
	R<String> saveBusiness(ConfBusiness confBusiness);


	/**
	 * 通过主键更新数据
	 *
	 * @param confBusiness 实例对象
	 * @return 通用返回对象
	 */
	R<String> updateBusinessById(ConfBusiness confBusiness);


	/**
	 * 专属指标导入导出功能查询业务
	 * @param confBusiness 业务vo
	 * @return 通用返回对象
	 */
	Page<ConfBusiness> queryToImport(ConfBusiness confBusiness);

	/**
	 * 通过系统id查询已确认的关键业务列表(远程接口）
	 * @param systemId 业务vo
	 * @return 通用返回对象
	 */
	List<ConfBusiness> queryKeyBusinessBySystemId(Integer systemId);

	/**
	 * 根据步骤编码查询所诉业务
	 * @param stepCodes 步骤编码列表
	 * @return 通用返回对象
	 */
	List<String> queryBusinessCodeListByStepCode(List<String> stepCodes);

	List<ConfBusiness> queryBySystemCodeAndName(ConfBusiness syBus);

	/**
	 * 根据系统id查询业务
	 * @param systemId
	 * @return
	 */
	List<SearchOptionVo> queryBusinessBySystemId(Integer systemId);
}